<?php
class Projekt_Model extends Model {

        protected $_uwagi,$_numer,$_nazwa,$_skrot,$_waluta,$_burzet,$_id_osoby,$_id,$_id_user_projektu,$_kryterium,$_warunki;
        /*
         * zmienia status produktu na usuniety
         * @param $tablica_indeksow - tablica id_produktow 
         */
        public function zmien_status_projektu($tablica_indeksow){
            $sql='in (';

            foreach($tablica_indeksow['check'] as $r=>$e)
                $sql.=$e.',';
            
            $sql=$this->obcinanie($sql);
            $rezultat=$this->db->query($this->polecenia_sql['update_produkt'].$sql)->result_array(true);
        }
        public function pobierz_puste_wnioski($wniosek)
        {
            /*
            $sql="select distinct
                w.*
                from
                wniosek w
                where
                w.id_wniosek=?
                and
                w.id_wniosek not in (select id_projekt from projekt where nalezy_do is null)";
             * 
             */
            $sql="select * from wniosek where id_wniosek=? and id_wniosek=(select nalezy_do from projekt where nalezy_do=?)";
            return $this->db->query($sql,$wniosek)->result_array(false);
        }
        /**
         *dodawanie produktu do projektu z iloscia 1 i jednostką szt
         * @param int $id_produktu id_produktu
         * @param int $id_projektu  id_projektu do ktorego produkt jest dodawany
         */
        public function dodaj_produkt($id_produktu,$id_projektu)
        {
            $sql="insert into tabela
                (id_produkt,ilosc,id_jednostka,id_projekt)
                values(?,1,(select id_jednostka from jednostka_miary where nazwa like '%szt%'),?)";

            $this->db>query($sql,
                    array($id_produktu,$id_projektu));
        }
        public function status_projektu_realizacjazakonczenie($opcja)
        {
            switch($opcja)
            {
                case 'zakonczenie':
                    $sql="update projekt set status=2 where id_projekt=?";
                    break;
                case 'realizacja':
                    $sql="update projekt set status=7 where id_projekt=?";
                    break;
            }
            $this->db->query($sql,  $this->get_id());
        }
        
        public function set_uwagi($zmienna)
        {
            $this->_uwagi=$zmienna;
        }
        public function get_uwagi()
        {
            return $this->_uwagi;
        }

        public function set_kryterium($zmienna)
        {
            $this->_kryterium=$zmienna;
        }
        public function get_kryterium()
        {
            return $this->_kryterium;
        }
        public function set_warunki($zmienna)
        {
            $this->_warunki=$zmienna;
        }
        public function get_warunki()
        {
            return $this->_warunki;
        }
        public function set_id_user_projektu($id)
        {
            $this->_id_user_projektu=$id;
        }
        public function get_id_user_projektu()
        {
            return $this->_id_user_projektu;
        }

        public function set_waluta($waluta)
        {
            $this->_waluta=$waluta;
        }
        public function get_waluta()
        {
            return $this->_waluta;
        }
        public function set_burzet($nowy_burzet)
        {
            $this->_burzet=$nowy_burzet;
        }
        public function get_burzet()
        {
            return $this->_burzet;
        }
        public function set_nazwa($nowa_nazwa_projektu)
        {
            $this->_nazwa=$nowa_nazwa_projektu;
        }
        public function get_nazwa()
        {
            return $this->_nazwa;
        }
        public function set_numer($numer_projektu)
        {
            $this->_numer=$numer_projektu;
        }
        public function get_numer()
        {
            return $this->_numer;
        }
        public function set_id($id)
        {
            $this->_id=$id;
        }
        public function get_id()
        {
            return $this->_id;
        }
        /**
         *usuwanie uzytkownika z projektu
         * @param <type> $parametry-tablica ([0]-id usera,[1]-id projektu)
         * @return <type> 
         */
        public function usun_osobe_z_projektu($parametry)
        {
            $sql.="delete from projekt_osoby where id_projekt =? and id_users=?";
            $rezultat=$this->db->query($sql,array($parametry_id[0],$parametry_id[1]));
            return $rezultat;
        }
        public function pobierz_komentarze_projektu()
        {
        	$sql="
        	select k.*,
        	(select count(*) from zalaczniki_wniosek z where z.id_komentarz=k.id_komentarz) as liczba_komentarzy,
        	(select u.nazwisko from users u inner join status_komentarze s using(id_users)
        	where s.id_komentarz=k.id_komentarz) as uzytkownik
        	 from komentarze_wniosek k where k.id_projekt=? order by k.data_dodania asc";
        	return $this->db->query($sql,$this->get_id())->result_array(false);
        }
        /**
         *zapisywanie uwag do projektu
         * @param <type> $parametry
         * @return <type> 
         */
        public function zapisz_uwagi()
        {
            $sql="update projekt set uwagi=? where id_projekt=?";
            //$sql="update projekt set uwagi=?, status=2 where id_projekt=?";
            $rezultat=$this->db->query($sql,array($this->_uwagi,$this->_id));
        }
        /**
         *dodawanie osoby do projektu
         * @param <type> $parametry-tablica ([0]-id usera,[1]-id projektu)
         * @return <type>
         */
        public function dodaj_kryterium_wnioski()
        {
            $sql="update projekt set kryteria=?,warunki=?
                where id_projekt=?";
            $rezultat=$this->db->query($sql,array($this->_kryterium,$this->_warunki,$this->_id));
            return $rezultat;
        }
        /**
         *dodawanie osoby do projektu
         * @param <type> $parametry-tablica ([0]-id usera,[1]-id projektu)
         * @return <type>
         */
        public function dodaj_osobe_do_projektu($parametry)
        {
            $sql.="insert into projekt_osoby where id_projekt =? and id_users=?";
            $rezultat=$this->db->query($sql,array($parametry_id[0],$parametry_id[1]));
            return $rezultat;
        }
        /*
         * wszystkie produkty o statusie aktywny
         */
        public function nowy_projekt($tab,$id_users){
            $sql="insert into projekt(
            nazwa,opis,rozszerzony,waluta,burzet,id_users)
            values
            (?,?,?,?,?,?)";
            $rezultat=$this->db->query($sql,array(
                $tab['nazwa'],
                $tab['opis'],
                $tab['rozszerzony'],
                $tab['waluta'],
                $tab['burzet'],$id_users));
            return $rezultat->insert_id();
        }
        protected function pobierz_calego_usera()
        {
            $sql="select nazwisko,imie,email,id_users as id_osoby from users where id_users=?";
            $rezultat=$this->db->query($sql,array(
                $this->_id_user_projektu))->result_array(false);
        }
        /**
         * tworzy nadrzedny projekt dla danego usera
         */
        public function update_nowy_projekt($tab,$do_wniosku=null)
        {
            if($do_wniosku)
            {
                $sql="update projekt set 
                tryb_postepowania=?,
                rodzaj_przetargu=?,
                nazwa=?,
                opis=?,
                rozszerzony=?,
                waluta=?,
                burzet=?,
                nalezy_do=?
                where
                id_projekt=?";

                $wstawiony_projekt=$this->db->query($sql,array(
                'a',//$tab['tryb_postepowania'],
                'b',//$tab['rodzaj_przetargu'],
                $tab['nazwa'],
                $tab['opis'],
                $tab['rozszerzony'],
                $tab['waluta'],
                $tab['burzet'],$do_wniosku,$this->get_id()));
                //echo '<br>aaa';
                //var_dump($wstawiony_projekt);
            }
            else
            {
                $sql="update projekt set nazwa=?,
                opis=?,
                rozszerzony=?,
                waluta=?,
                burzet=? where
                id_projekt=?";

                $wstawiony_projekt=$this->db->query($sql,array(
                $tab['nazwa'],
                $tab['opis'],
                $tab['rozszerzony'],
                $tab['waluta'],
                $tab['burzet'],$this->get_id()));
            }

            $uzyt=new Uzytkownik_Model();
            $uzyt->set_id($this->_id_user_projektu);
            $id_user=$uzyt->pobierz_usera(); //tu tablica ascocjacyjna danych o userze

            //jest jest juz email usera w osobach, pobranie wiersza z osob
            $uzyt->set_email($id_user['email']);
            $r=$uzyt->pobierz_id_osoby();
            //var_dump($r);
            //jesli nie ma osoby takiej wstaw
            if(empty($r))
                {
                $uzyt->set_nazwisko($id_user['nazwisko']);
                $uzyt->set_imie($id_user['imie']);
                $uzyt->set_email($id_user['email']);

                $id_osoby=$uzyt->wstaw_osobe();
                $id_osoby=$id_osoby->insert_id();
                //echo'<br>bylo puste';
                }
             else
                 $id_osoby=$r[0]['id_osoby'];
             //secho '<br>'.$id_osoby;

             if(    $this->sprawdz_czy_istnieje(0))
                     $this->wstaw_projekt_dla_danego_usera($id_osoby);
        }
        /**
         *sprawdz czy istnieje projekt o danym numerze id
         * @return <type>
         */
        public function sprawdz_czy_istnieje($opcja)
        {
            //teraz
            switch($opcja)
            {
                case 0: //dla projektu
                    $zmienna = $this->db->from('projekt_users')->select('*')->where('id_projekt',$this->_id)->get();
                    //$sql="select * from projekt_users where id_projekt=?";
                    break;
                case 1: //dla wniosku
                    $zmienna = $this->db->from('projekt_users')->select('*')->where('id_wniosek',$this->_id)->get()->result_array(false);
                    break;
            }
           if(empty($zmienna))
                return false;
             else
                 return true;
        }
        public function zmien_status_na_usuniety()
        {
            $status = $this->db->update('projekt',
                    array(
                        'status'   =>10
                        ),
                    array('id_projekt' => $this->get_id()));
        }
        public function wstaw_projekt_dla_danego_usera($id_osoby_do_projektu)
        {
             $sql="insert into projekt_users(id_projekt,id_osoby,id_rola)
                    values(
                    (select id_projekt from projekt where id_projekt=?),
                    (select id_osoby from osoby where id_osoby=?),
                    (select id_rola from rola where nazwa=?)
                    )";
             $rezultat=$this->db->query($sql,array(
                    $this->_id,$id_osoby_do_projektu,'Ewaluator'));
        }
        public function zapisz_daty($tablica_dat,$opcja=null)
        {
            $sql="update projekt set
                data_rozpoczecia=to_date(?, 'dd-mm-yyyy'),
                data_wyboru_dostawcy=to_date(?, 'dd-mm-yyyy'),
                data_podpisania_umowy=to_date(?, 'dd-mm-yyyy'),
                data_realizacji=to_date(?, 'dd-mm-yyyy'),
                data_zakonczenia=to_date(?, 'dd-mm-yyyy')
                where id_projekt=?";
            $rezultat=$this->db->query($sql,array(
                $tablica_dat['data_1'],
                $tablica_dat['data_2'],
                $tablica_dat['data_3'],
                $tablica_dat['data_4'],
                $tablica_dat['data_5'],$this->_id))->result_array(false);
        }
        /**
         *pobiera wszystkie projekty danego usera,zwraca pola projektu(id_projekt,nazwa,data_rozpoczecia,data_zakonczenia,status!! tu case !!)
         * oraz usera(nazwisko)
         * @param int $id_user id_usera
         * @return asocjacyjna
         */
        public function pobierz_moje_projekty($id_user,$limit=null)
        {
            $sql="select p.id_projekt,p.nazwa,u.nazwisko,
                to_char(p.data_rozpoczecia, 'dd.mm.yyyy r.') as data_rozpoczecia,
                to_char(p.data_zakonczenia, 'dd.mm.yyyy r.') as data_zakonczenia,p.status,
                case
                when p.status=5 then 'Negocjacje'
                when p.status=4 then 'Wybór ofert'
                when p.status=3 then 'analiza ofert'
                when p.status=2 then 'Wysłano zapytania'
                when p.status=1 then 'W edycji'
                end as status_slowny
                ,(select count(*) from komentarze_wniosek k where k.id_projekt=p.id_projekt) as liczba from projekt p inner join users u using(id_users) where u.id_users =?  ";
            if($limit)
                $sql.=$limit;
            return $this->db->query($sql,$id_user)->result_array(false);
        }
        /**
         *pobiera caly projekt o danym numerze id
         * $opcja 0-dla projektu,1 dla wniosku
         * @return <type>
         */
        public function pobierz($opcja)
        {
            switch($opcja)
            {
                case 4:
                    $sql="select tytul,opis,uzasadnienie,wartosc_zakupu as szacunkowa,
                        kryteria,warunki,wartosc_zakupu
                        ,propozycja,
                        to_char(termin_ogloszenia,'dd-mm-yyy') as data_1,
                        to_char(termin_skladania_wnioskow,'dd-mm-yyy') as data_2,
                        to_char(wybor_oferty,'dd-mm-yyy') as data_3,
                        to_char(termin_podpisania_umowy,'dd-mm-yyy') as data_4,
                        to_char(termin_realizacji_zamowienia,'dd-mm-yyy') as data_5,
                        termin_ogloszenia_uwagi as data_1_uwagi,
                        termin_skladania_wnioskow_uwagi as data_2_uwagi,
                        wybor_oferty_uwagi as data_3_uwagi,
                        termin_podpisania_umowy_uwagi as data_4_uwagi,
                        termin_realizacji_zamowienia_uwagi as data_5_uwagi,
                        uwagi as pole
                        from wniosek where id_wniosek=(select nalezy_do from projekt where id_projekt=?)";
                    $wynik=$this->db->query($sql,$this->get_id())->result_array(false);
                    if(empty($wynik[0]))
                        return false;
                    else
                        return  $wynik[0];
                    break;
                case 3:
                    $sql="select * from projekt where nalezy_do=?";
                    return  $this->db->query($sql,$this->get_id())->result_array(false);
                    break;
                case 2:
                    $sql="select * from wniosek where id_wniosek=?";
                    return  $this->db->query($sql,$this->get_id())->result_array(false);
                    break;
                case 0:
                    $sql="select nazwa,opis,rozszerzony,waluta,burzet
                        ,to_char(data_rozpoczecia,'dd-mm-yyyy') as data_1,
                        to_char(data_wyboru_dostawcy,'dd-mm-yyyy') as data_2,
                        to_char(data_podpisania_umowy,'dd-mm-yyyy') as data_3,
                        to_char(data_realizacji,'dd-mm-yyyy') as data_4,
                        to_char(data_zakonczenia,'dd-mm-yyyy') as data_5,
                        uwagi as pole,uwagi,nalezy_do
                        from projekt where id_projekt=?";
                    $wynik=$this->db->query($sql,$this->get_id())->result_array(false);
                    return  $wynik[0];
                break;
                case 1:
                    $sql="select
                        nr_umowy_ramowej as pole,
                        tytul,
                        opis,
                        uzasadnienie,
                        wartosc_zakupu as szacunkowa,
                        wartosc_zakupu,
                        zamowienie,
                        termin_realizacji,
                        miejsce_realizacji as miejsce,
                        kryteria,warunki,wartosc_zakupu,
                        termin_ogloszenia,
                        termin_skladania_wnioskow,
                        wybor_oferty,
                        termin_podpisania_umowy,
                        termin_realizacji_zamowienia
                        ,propozycja,id_branza,
                        to_char(termin_ogloszenia,'dd-mm-yyy') as data_1,
                        to_char(termin_skladania_wnioskow,'dd-mm-yyy') as data_2,
                        to_char(wybor_oferty,'dd-mm-yyy') as data_3,
                        to_char(termin_podpisania_umowy,'dd-mm-yyy') as data_4,
                        to_char(termin_realizacji_zamowienia,'dd-mm-yyy') as data_5,
                        termin_ogloszenia_uwagi as data_1_uwagi,
                        termin_skladania_wnioskow_uwagi as data_2_uwagi,
                        wybor_oferty_uwagi as data_3_uwagi,
                        termin_podpisania_umowy_uwagi as data_4_uwagi,
                        termin_realizacji_zamowienia_uwagi as data_5_uwagi,
                        uwagi as pole,
                        powod_niewykorzystania as opcje_reguly_powod,
                        to_char(termin_realizacji,'dd-mm-yyy') as data_1_
                        from wniosek where id_wniosek=?";
                    //echo '<br>'.$sql;
                    $wynik=$this->db->query($sql,$this->get_id())->result_array(false);
                    //var_dump($wynik);
                    //if (!empty($wynik))
                      return  $wynik[0];
                break;
            }
        }
        public function pobierz_w_edycji($id_user)
        {
            $sql="select * from projekt where id_users=? and status=0";
            $rezultat=$this->db->query($sql,$this->_id)->result_array(false);
        }
        public function __construct(){
            parent::__construct();
        }
      /*
       * aktualizuje produkt
       * @param $dane_produktu- tablica asocjacyjna z danymi produktu
       */
      public function aktualizuj_projekt($dane_produktu){
          
        $rezultat=$this->db->query($this->polecenia_sql['update'],array(
            $dane_produktu['ilosc'],
            $dane_produktu['cena'],
            $dane_produktu['nazwa'],
            $dane_produktu['opis'],
            $dane_produktu['kategoria'],
            $dane_produktu['jednostka'],
            $this->_id));
      }
      /**
       *pobiera id_projektu ktory jeszcze nie ma statusu 2(zamkniety) dla danego usera
       * zalowgowanego
       * @return <type>
       */
      public function pobierz_id_projektu_dla_usera()
      {
          //po sprawdzeniu
          $sql="select id_projekt from projekt p inner join users u using(id_users) where p.status in (0,1)
              and p.id_users=?";
          return $this->db->query($sql,$this->_id_user_projektu)->result_array(false);
          //po sprawdzeniu
      }
      /**
       *wstawia nowy, pusty projekt
       * @return <type>
       */
      public function wstaw_pusty_projekt()
      {
          //po sprawdzeniu
        $sql="insert into projekt(nazwa,opis,rozszerzony,burzet,waluta,status,id_users)
                values(?,?,?,?,?,0,330)";
        return $this->db->query($sql,array('','','','',''));
        //po sprawdzeniu
      }
      /**
       *pobiera id projektu daengo usera, jesli projektu nie ma o statusie 0,1, jest on wstawiany
       * @return <type>
       */
      public function pobierz_nowe_id()
      {
          //po sprawdzeniu
          //$tablica=$this->pobierz_id_projektu_dla_usera();
          //var_dump($tablica);
          //if(empty($tablica))
          //{
            $wynik=$this->wstaw_pusty_projekt();
            return $wynik->insert_id();
          //}
          //else
          //    return $tablica[0]['id_projekt'];
          //po sprawdzeniu
      }
      protected function wstaw_osobe($id_usera)
      {
                    $sql="insert into osoby(nazwisko,imie,email) select nazwisko,imie,email from users
                        where id_users=?";
                    $wynik=$this->db->query($sql,$id_usera);
                    return $wynik->insert_id();
      }
      public function zamknij_edycje()
      {
          $sql="update projekt set status=2 where id_projekt=?";
          $wynik=$this->db->query($sql,array($this->_id));
          
      }
      public function update_nalezy_do($parametr)
      {
          $this->db->update('projekt', array('nalezy_do' => $this->get_id()), array('id_projekt' => 5));

      }
}
?>
